<?php
/* 
* 函数库
* @Author: Administrator
* @Date:   2014-03-20 10:06:44
* @Last Modified by:   home
* @Last Modified time: 2014-05-05 02:12:22
*/

//打印用户自定义常量
function print_const(){
	$const = get_defined_constants(true);
		p($const['user']);
}
/**
 * 类自动加载
 * @param  [type] $className [description]
 * @return [type]            [description]
 */
function __autoload($className){
	if(require_cache(CWF_PATH.'Tool/'.$className.'.class.php')){

	}else if(require_cache(CWF_PATH.$className.'.class.php')){
		
	}
}
/**
 * M方法[实例化[模型]一个类]
 * @param [type] $table [表名]
 */
function M($table)
{
	return new Model($table);
}

/**
 * 打印数据
 * data参数可以是任何数据类型，没有返回值
 *  <code>
 *  $arr=array(1,3,4);
 *  p($arr);
 *  </code>
 * @param mixed $data 数据
 * @return null
 */
function p($data){
	echo "<div style='margin-top:50px;' /><script type='text/javascript' src='http://beta.cuiwei.net/1.0/APP/Public/Html/syntaxhighlighter/js/shCore.js'></script><script type='text/javascript' src='http://beta.cuiwei.net/1.0/APP/Public/Html/syntaxhighlighter/js/shAutoloader.js'></script><link type='text/css' rel='stylesheet' href='http://beta.cuiwei.net/1.0/APP/Public/Html/syntaxhighlighter/css/shCore.css' /><link type='text/css' rel='stylesheet' href='http://beta.cuiwei.net/1.0/APP/Public/Html/syntaxhighlighter/css/shCoreDefault.css'/>";
	echo "<pre class='brush: sql;toolbar:false;'>";
	echo print_r($data,true);
	echo "</pre><script type='text/javascript'>SyntaxHighlighter.autoloader('sql	http://beta.cuiwei.net/1.0/APP/Public/Html/syntaxhighlighter/js/shBrushSql.js');SyntaxHighlighter.all();
</script>";
}
/**
 * 加载文件（具有缓存的功能）
 * @param  [type] $file [description]
 * @return [type]       [description]
 */
function require_cache($file=null){
	/**
	 * 文件加载的文件，用于记录每一次加地的文件
	 * 通过缓存判断，已经加载的文件不再加载
	 * @var array
	 */
	static $cache=array();
	if(is_null($file)){
		//当file为空时，返回所以已经加载的文件
		return $cache;
	}else if(isset($cache[$file])){
		return true;
	}else{
		if(is_file($file)){
			require $file;
			return $cache[$file]=true;
		}else{
			return false;
		}
	}
}
function C($name=null,$value=null){
	static $config=array();
	/**
	 * 如果传递是数组时与原配置文件合并
	 */
	if(is_array($name)){
		return $config =array_merge($config,$name);
	}else if(is_null($name)){
		//获得所有配置项
		return $config;
	}else if(!is_null($value)){
		$config[$name]=$value;
	}else{
		return isset($config[$name])?$config[$name]:null;
	}
}
/**
 * 获得易识别单位
 * @return [type] [description]
 */
function get_size($size){
	switch($size){
		case $size>pow(1024,3):
			return round($size/pow(1024,3),3)."GB";
		case $size>pow(1024,2):
			return round($size/pow(1024,2),3)."MB";
		case $size>pow(1024,1):
			return round($size/pow(1024,1),3)."MB";
	}
}
/**
 * 删除目录（支持多层）
 * @param  string $dir 目录名
 * @return boolean      成功或失败
 */
function del($file){
	//如果资源不存在
	if(!file_exists($file)){
		return true;
	}
	//删除文件
	if(is_file($file) ){
		return  @unlink($file);
	}else{//删除目录
		//删除目录下的所有文件资源
		foreach(glob($file.'/*') as $f){
			is_file($f)?unlink($f):del_dir($f);
		}
		//删除当前目录
		return  rmdir($file);
	}
}
/**
 * 复制目录
 * @param  [type] $res_dir [源目录]
 * @param  [type] $to_dir  [目标目录]
 * @return [type]          [description]
 */
function copy_dir($res_dir,$to_dir){
	//目录不存时，不操作
	if(!is_dir($res_dir))return false;
	//目标目录不存时，创建
	is_dir($to_dir) or mkdir($to_dir,0777,true);
	foreach(glob($res_dir.'/*') as $f){
		$to = $to_dir.'/'.basename($f);
		//a/aa    b/aa
		is_dir($f)?copy_dir($f,$to):copy($f,$to);
	}
}
/**
 * 移动目录
 * @param  [type] $res_dir [description]
 * @param  [type] $to_dir  [description]
 * @return [type]          [description]
 */
function move_dir($res_dir,$to_dir){
	copy_dir($res_dir,$to_dir);
	return del($res_dir);
}
/**
 * 操作成功的提示内容
 * @return [type] [description]
 */
function success($msg,$url){
  echo "<h1 style='font-size:16px;color:green;font-weight:bold;border:solid 1px green;padding:10px;'>
{$msg}
  </h1>";
  echo "<script>
  setTimeout(function(){
	location.href='{$url}';
},3000);
  </script>";
  exit;
}
/**
 * 操作错误提示内容
 * @param  [type] $msg [description]
 * @param  [type] $url [description]
 * @return [type]      [description]
 */
function error($msg,$url){
  echo "<h1 style='font-size:16px;color:red;font-weight:bold;border:solid 1px red;padding:10px;'>
{$msg}
  </h1>";
  echo "<script>
  setTimeout(function(){
	location.href='{$url}';
},3000);
  </script>";
  exit;
}
//数组转键值大小写
function array_change_value_case($arr,$case=0){
	$func = $case?'strtoupper':'strtolower';
	foreach($arr as $n=>$a){
		$arr[$n]=is_array($a)?array_change_value_case($a,$case):$func($a);
	}
	return $arr;
}
//改变数组KEY大小写
function array_change_key_case_d($arr,$case=0){
	$func = $case?'strtoupper':'strtolower';
	foreach($arr as $n=>$v){
		unset($arr[$n]);
		$n=$func($n);
		$arr[$n]=is_array($v)?array_change_key_case_d($v,$case):$v;
	}
	return $arr;
}
/**
 * 脚本出错时用于显示错误信息的方法
 * @param  [type] $msg [description]
 * @return [type]      [description]
 */
function halt($msg){
	echo "<div style='padding:20px;border:solid 2px #dcdcdc;'>
		$msg
	</div>";
	exit;
} 